// Not to be confused with the ParamReader class, this class
// holds parameters specific to the nBody simulation.

// Having all of these in one class makes it easy to toss around
// between functions.

// Since this class is only meant to be used with this simulation,
// I'm ignoring good programming practice by making all of the data
// values public.

#ifndef PARAMHOLDER_H
#define PARAMHOLDER_H

#include "ParamReader.h"

const double DEFAULT_START_TIME = 0.0;
const double DEFAULT_STOP_TIME = 1.0;
const double DEFAULT_DT = 0.01;
const double DEFAULT_TIME_STEP_TOL = 0.01;
const double DEFAULT_OUTPUT_DT = 0.1;

const double DEFAULT_MASS_UNITS = 1.0;
const double DEFAULT_TIME_UNITS = 1.0;
const double DEFAULT_LENGTH_UNITS = 1.0;

const double DEFAULT_G_CGS = 6.67e-8;
const double DEFAULT_SOFTENING_PARAMETER = 0.0;
const double DEFAULT_OPENING_ANGLE = 0.0;

const string DEFAULT_OUTPUT_PREFIX = "DD";
const int DEFAULT_OUTPUT_COLUMN_WIDTH = 15;
const int DEFAULT_ZEROS_IN_OUTPUT_NAME = 4;

class ParamHolder
{
   public:
      ParamHolder(string);

      double StartTime;
      double StopTime;
      double dt;
      double TimeStepTol;
      double OutputDt;

      double MassUnits;
      double TimeUnits;
      double LengthUnits;

      double G_cgs;
      double SofteningParameter;

      string OutputPrefix;
      double OutputColumnWidth;
      double OpeningAngle;

      int ZerosInOutputName;

   private:
};

#endif // PARAMHOLDER_H
